package com.internetCafes.spms.web.project.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.internetCafes.spms.common.module.excel.po.ProjectExcel;
import com.internetCafes.spms.common.module.excel.po.ProjectStaticExcel;
import com.internetCafes.spms.common.utils.entity.page.PageItemDTO;
import com.internetCafes.spms.common.utils.entity.page.PageItemVO;
import com.internetCafes.spms.web.certificate.model.vo.project.CertificateTransactionOutProjectsVO;
import com.internetCafes.spms.web.project.entity.ProjectConfig;
import com.internetCafes.spms.web.project.entity.dto.projectconfig.ProjectCertificatePagingDTO;
import com.internetCafes.spms.web.project.entity.dto.projectconfig.ProjectPagingDTO;
import com.internetCafes.spms.web.project.entity.dto.projectconfig.ProjectSaveDTO;
import com.internetCafes.spms.web.project.entity.dto.projectconfig.ProjectUpdateDTO;
import com.internetCafes.spms.web.project.entity.dto.projectstatistics.ProjectStatisticPagingDTO;
import com.internetCafes.spms.web.project.entity.vo.projectconfig.ProjectCertificatesPagingVO;
import com.internetCafes.spms.web.project.entity.vo.projectconfig.ProjectInfoVO;
import com.internetCafes.spms.web.project.entity.vo.projectconfig.ProjectPagingVO;
import com.internetCafes.spms.web.project.entity.vo.projectstatistics.ProjectStatisticPagingVO;

import java.util.List;

/**
 * <p>
 * 项目信息管理表 服务类
 * </p>
 *
 * @author Zj
 * @since 2021-04-27
 */
public interface IProjectConfigService extends IService<ProjectConfig> {

    /**
     * 证书借出获取项目列表
     *
     * @return 项目列表
     * @author Zj
     */
    List<CertificateTransactionOutProjectsVO> transactionOutProjects();

    /**
     * 项目信息导出
     *
     * @return 项目信息列表
     * @author Zj
     */
    List<ProjectExcel> exportProjectInfos();

    /**
     * 项目统计导出excel
     *
     * @return 导出相关excel信息
     * @author Zj
     */
    List<ProjectStaticExcel> exportProjectStatic();

    /**
     * 项目证书分页列表
     *
     * @param dto 请求参数
     * @return 项目证书列表
     * @author Zj
     */
    PageItemVO<ProjectCertificatesPagingVO> certificatesPaging(PageItemDTO<ProjectCertificatePagingDTO> dto);

    /**
     * 项目统计列表
     *
     * @param dto 请求参数
     * @return 数据列表
     * @author Zj
     */
    PageItemVO<ProjectStatisticPagingVO> statisticPaging(PageItemDTO<ProjectStatisticPagingDTO> dto);

    /**
     * 获取项目详情
     *
     * @param id 项目id
     * @return 项目详情
     * @author Zj
     */
    ProjectInfoVO info(Long id);

    /**
     * 作废项目
     *
     * @param id id
     * @author Zj
     */
    void deleteById(Long id);

    /**
     * 数据更新
     *
     * @param dto 更新参数
     * @author Zj
     */
    void update(ProjectUpdateDTO dto);

    /**
     * 分页接口
     *
     * @param dto 分页请求参数
     * @return 分页数据
     * @author Zj
     */
    PageItemVO<ProjectPagingVO> page(PageItemDTO<ProjectPagingDTO> dto);

    /**
     * 项目新增
     *
     * @param dto 新增参数
     * @author Zj
     */
    void save(ProjectSaveDTO dto);
}
